#include "GSharpGeneralizedClass.h"
#include "Reflection/Type.h"
#include "Reflection/PlaceholderInfo.h"

#include "ScriptRuntime/Type/GSharpGenericClass.h"
#include "ScriptRuntime/Type/GSharpFieldProperty.h"
#include "ScriptRuntime/Type/GSharpPropertyList.h"
#include "Containers/String.h"
#include "Containers/Vector.h"


CGSharpGeneralizedClass::CGSharpGeneralizedClass(const STypeID &InTypeID
        ,CGSharpGenericClass* InTemplate
        ,const TVector<CType*> &InGenericTypeArguments
        )
        :CGSharpClass(
            InTypeID
            ,ETypeFlags::Generalized
        )
{
    Template = InTemplate;

    GenericTypeArguments = InGenericTypeArguments;

}





// SDecoratedType CGSharpGeneralizedClass::GetGeneralizedType(const SDecoratedType &InType)
// {
//     if(!InType.BasicType->IsGenericType()
//         && !InType.BasicType->IsGenericPlaceholderType()
//     )
//     {
//         return InType;
//     }

//     if(InType.BasicType->IsGenericPlaceholderType())
//     {
//         CPlaceholderType* PlaceholderClass = reinterpret_cast<CPlaceholderType*>(InType.BasicType);
//         return GenericTypeArguments[PlaceholderClass->GetPlaceholderIndex()];
//     }
   
    
// }